#ifndef QUEUE_H
#define QUEUE_H

// 队列节点结构体
typedef struct QueueNode {
    void* data;              // 数据指针
    struct QueueNode* next;  // 下一节点指针
} QueueNode;

// 队列结构体
typedef struct {
    QueueNode* front;        // 队首指针
    QueueNode* rear;         // 队尾指针
    int size;               // 队列大小
    int dataSize;           // 数据类型大小（字节数）
} Queue;

// 队列操作函数
void queue_init(Queue* queue, int dataSize);         // 初始化队列
void queue_clear(Queue* queue);                      // 清空队列
void queue_destroy(Queue* queue);                    // 销毁队列
int queue_size(Queue* queue);                       // 获取队列大小
int queue_is_empty(Queue* queue);                   // 判断队列是否为空

// 数据操作函数
void queue_push(Queue* queue, void* data);          // 入队
void queue_pop(Queue* queue);                       // 出队
void* queue_front(Queue* queue);                    // 获取队首元素
void* queue_rear(Queue* queue);                     // 获取队尾元素

// 遍历函数
void queue_foreach(Queue* queue, void (*func)(void*)); // 遍历队列

#endif 